home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / wemdemo3.zip / ETC / EMACS.INI < prev    next >
Lisp/Scheme  |  1994-09-21  |  10KB  |  248 lines

  1. ;;; -*- Mode: Emacs-Lisp -*-
  2.  
  3. ;;; This is a sample emacs.ini file.
  4. ;;;
  5. ;;; The emacs.ini file, which should reside in your Emacs home directory
  6. ;;; (defined by the EMACSHOME environment variable, which defaults to C:\),
  7. ;;; allows you to customize the behavior of Emacs.  In general, changes to
  8. ;;; your emacs.ini file will not take effect until the next time you start
  9. ;;; up Emacs.  You can load it explicitly with
  10. ;;; `M-x load-file RET c:\emacs.ini RET'. (You may have to correct the
  11. ;;; pathname.)
  12. ;;;
  13. ;;; There is a great deal of documentation on customization in the Emacs
  14. ;;; manual.  You can read this manual with the online Info browser: type
  15. ;;; `C-h i' or select "Emacs Info" from the "Help" menu.
  16.  
  17.  
  18. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  19. ;;            Basic Customization                ;;
  20. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  21.  
  22. ;;; Older versions of emacs did not have these variables
  23. ;;; (emacs-major-version and emacs-minor-version.)
  24. ;;; Let's define them if they're not around, since they make
  25. ;;; it much easier to conditionalize on the emacs version.
  26.  
  27. (if (and (not (boundp 'emacs-major-version))
  28.      (string-match "^[0-9]+" emacs-version))
  29.     (setq emacs-major-version
  30.       (string-to-int (substring emacs-version
  31.                     (match-beginning 0) (match-end 0)))))
  32. (if (and (not (boundp 'emacs-minor-version))
  33.      (string-match "^[0-9]+\\.\\([0-9]+\\)" emacs-version))
  34.     (setq emacs-minor-version
  35.       (string-to-int (substring emacs-version
  36.                     (match-beginning 1) (match-end 1)))))
  37.  
  38. (setq running-xemacs (string-match "Lucid" emacs-version))
  39. (setq running-emacs-19 (>= emacs-major-version 19))
  40. (setq running-fsf-emacs-19 (and running-emacs-19 (not running-xemacs)))
  41. (setq running-emacs-18 (< emacs-major-version 19))
  42. (setq running-x (eq window-system 'x))
  43.  
  44. ;; Enable the commands `narrow-to-region' ("C-x n n") and 
  45. ;; `eval-expression' ("M-ESC", or "ESC ESC").  Both are useful
  46. ;; commands, but they can be confusing for a new user, so they're
  47. ;; disabled by default.
  48. (put 'narrow-to-region 'disabled nil)
  49. (put 'eval-expression 'disabled nil)
  50.  
  51.  
  52. ;; Make the sequence "C-x C-j" execute the `goto-line' command, 
  53. ;; which prompts for a line number to jump to.
  54. (global-set-key "\C-x\C-j" 'goto-line)
  55.  
  56.  
  57.  
  58. (cond (running-xemacs
  59.        ;;
  60.        ;; Code for any version of Lucid Emacs goes here
  61.        ;;
  62.  
  63.        ;; Change the values of some variables.
  64.        ;; (t means true; nil means false.)
  65.        ;;
  66.        ;; Use the "Describe Variable..." option on the "Help" menu
  67.        ;; to find out what these variables mean.
  68.        (setq find-file-use-truenames nil
  69.          find-file-compare-truenames t
  70.          minibuffer-confirm-incomplete t
  71.          complex-buffers-menu-p t
  72.          )
  73.  
  74.        (cond (running-x
  75.           ;;
  76.           ;; Code which applies only when running emacs under X goes here.
  77.           ;; (Currently, this is always the case in lemacs, but it will
  78.           ;; not be in the future.)
  79.           ;;
  80.  
  81.           ;; Remove the binding of C-x C-c, which normally exits emacs.
  82.           ;; It's easy to hit this by mistake, and that can be annoying.
  83.           ;; Under X, you can always quit with the "Exit Emacs" option on
  84.           ;; the File menu.
  85.           ;; (global-set-key "\C-x\C-c" nil)
  86.  
  87.           ;; This changes the variable which controls the text that goes
  88.           ;; in the top window title bar.  (However, it is not changed
  89.           ;; unless it currently has the default value, to avoid
  90.           ;; interfering with a -wn command line argument I may have
  91.           ;; started emacs with.)
  92.           (if (equal screen-title-format "%S: %b")
  93.           (setq screen-title-format
  94.             (concat "%S [" emacs-version "]"
  95.                 (if nil ; (getenv "NCD")
  96.                     ""
  97.                   "   %b"))))))
  98.  
  99.  
  100.        ;;
  101.        ;; (The following code applies whether or not we're running X.)
  102.        ;;
  103.  
  104.        ;; Change the binding of mouse button 2, so that it inserts the
  105.        ;; selection at point (where the text cursor is), instead of at
  106.        ;; the position clicked.
  107.        ;;
  108.        ;; Note that you can find out what a particular key sequence or
  109.        ;; mouse button does by using the "Describe Key..." option on
  110.        ;; the Help menu.
  111.        (define-key global-map 'button2 'x-insert-selection)
  112.  
  113.        ;; LISPM bindings of Control-Shift-C and Control-Shift-E.
  114.        ;; Note that "\C-C" means Control-C, not Control-Shift-C.
  115.        ;; To specify shifted control characters, you must use the
  116.        ;; more verbose syntax used here.
  117.        (define-key emacs-lisp-mode-map '(control C) 'compile-defun)
  118.        (define-key emacs-lisp-mode-map '(control E) 'eval-defun)
  119.  
  120.        ;; Make F5 be `undo'
  121.        (global-set-key 'f5 'undo)
  122.  
  123.        ;; Make F6 be `save-file' followed by `delete-window'.
  124.        (global-set-key 'f6 "\C-x\C-s\C-x0")
  125.  
  126.        ;; Make `C-x C-m' and `C-x RET' be different (since I tend to type
  127.        ;; the latter by accident sometimes.)
  128.        (define-key global-map [(control x) return] nil)
  129.  
  130.        ;; Add `dired' to the File menu
  131.        (add-menu-item '("File") "Edit Directory" 'dired t)
  132.  
  133.        ))
  134.  
  135.  
  136. (cond ((and running-xemacs
  137.         (>= emacs-major-version 19)
  138.         (>= emacs-minor-version 6))
  139.        ;;
  140.        ;; Code which requires Lucid Emacs version 19.6 or newer goes here
  141.        ;;
  142.        ))
  143.  
  144. (cond (running-emacs-19
  145.        ;;
  146.        ;; Code for any vintage-19 emacs goes here
  147.        ;;
  148.        ))
  149.  
  150. (cond (running-fsf-emacs-19
  151.        ;;
  152.        ;; Code specific to FSF Emacs 19 (not Lucid Emacs) goes here
  153.        ;;
  154.        ))
  155.  
  156. (cond (running-emacs-19
  157.        ;;
  158.        ;; Code specific to emacs 18 goes here
  159.        ;;
  160.        ))
  161.  
  162.  
  163. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  164. ;;        Customization of Specific Packages            ;;
  165. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  166.  
  167.  
  168. ;;; ********************
  169. ;;; Load a partial-completion mechanism, which makes minibuffer completion
  170. ;;; search multiple words instead of just prefixes; for example, the command
  171. ;;; `M-x byte-compile-and-load-file RET' can be abbreviated as `M-x b-c-a RET'
  172. ;;; because there are no other commands whose first three words begin with
  173. ;;; the letters `b', `c', and `a' respectively.
  174. ;;;
  175. (load-library "completer")
  176.  
  177.  
  178. ;;; ********************
  179. ;;; Edebug is a source-level debugger for emacs-lisp programs.
  180. ;;;
  181. (define-key emacs-lisp-mode-map "\C-xx" 'edebug-defun)
  182.  
  183.  
  184. ;;; ********************
  185. ;;; Font-Lock is a syntax-highlighting package.  When it is enabled and you
  186. ;;; are editing a program, different parts of your program will appear in
  187. ;;; different fonts or colors.  For example, with the code below, comments
  188. ;;; appear in red italics, function names in function definitions appear in
  189. ;;; blue bold, etc.  The code below will cause font-lock to automatically be
  190. ;;; enabled when you edit C, C++, Emacs-Lisp, and many other kinds of
  191. ;;; programs.
  192.  
  193. ;; Definition stolen from later versions of font-lock.
  194. (defun turn-on-font-lock ()
  195.   (font-lock-mode 1))
  196.  
  197. (require 'font-lock)
  198. (cond (running-xemacs
  199.        ;; font-lock exists under FSF Emacs 19 but the faces
  200.        ;; are handled differently, and I don't feel like
  201.        ;; porting the code now.
  202.        (set-face-foreground 'font-lock-function-name-face "blue")
  203.        (set-face-foreground 'font-lock-comment-face "red")
  204.        (set-face-foreground 'font-lock-string-face "forest green")
  205.        (set-face-underline-p 'font-lock-string-face nil)
  206.        (make-face-unitalic 'font-lock-string-face)
  207.        (make-face-unitalic 'font-lock-function-name-face)
  208.        (make-face-unitalic 'font-lock-comment-face)
  209.        (copy-face 'font-lock-function-name-face 'font-lock-keyword-face)
  210.        (copy-face 'font-lock-string-face 'font-lock-doc-string-face)
  211.        (copy-face 'font-lock-string-face 'font-lock-type-face))
  212.       (running-fsf-emacs-19
  213.        (make-face 'my-red-face)
  214.        (set-face-foreground 'my-red-face "red")
  215.        (make-face 'my-green-face)
  216.        (set-face-foreground 'my-green-face "green")
  217.        (make-face 'my-blue-face)
  218.        (set-face-foreground 'my-blue-face "blue")
  219.        (setq font-lock-function-name-face 'my-blue-face)
  220.        (setq font-lock-comment-face 'my-red-face)
  221.        (setq font-lock-string-face 'my-green-face)
  222.        (setq font-lock-keyword-face 'my-blue-face)
  223.        (setq font-lock-doc-string-face 'my-green-face)
  224.        (setq font-lock-type-face 'my-green-face)))
  225. (add-hook 'emacs-lisp-mode-hook    'turn-on-font-lock)
  226. (add-hook 'lisp-mode-hook    'turn-on-font-lock)
  227. (add-hook 'c-mode-hook        'turn-on-font-lock)
  228. (add-hook 'c++-mode-hook    'turn-on-font-lock)
  229. (add-hook 'perl-mode-hook    'turn-on-font-lock)
  230. (add-hook 'tex-mode-hook    'turn-on-font-lock)
  231. (add-hook 'texinfo-mode-hook    'turn-on-font-lock)
  232.  
  233. ;;; ********************
  234. ;;; Automatically save and restore the "context" (i.e. files visited
  235. ;;; and window/file configuration) when Emacs exits and starts up
  236. ;;; again. (Bug in package: only the context of the screen that is
  237. ;;; current when you exit will be saved.)
  238. ;;;
  239. ; uncomment the following lines to enable the package.
  240. ;(require 'saveconf)
  241. ;(if (null (cdr command-line-args))
  242. ;    (setq inhibit-startup-message (recover-context)))
  243. ;;; If you leave the following line commented out but uncomment the
  244. ;;; previous ones, the context will not automatically be saved, but
  245. ;;; the last saved context will automatically be restored.  Then you
  246. ;;; save the context when you want, using `M-x save-context'.
  247. ;(setq auto-save-and-recover-context t)
  248.